Continuous Delivery & Integration with Fabric8 on Cloud platform

Charles Moulliard
23th of October 2015

softshake-2015

Who

cmoulliard

Apache Committer, Architect, Fuse Expert

Blog: http://cmoulliard.github.io

Twitter: @cmoulliard

Email: cmoulliard@redhat.com

  • Committer on Apache Camel, Karaf, Fabric8, Hawtio … & PMC

  • Technology evangelist

  • Mountain Biker, Belgian Beer Fan, Blogger

Agenda

  • The cost of change

  • CD/CI

  • Technology

  • OpenShift

  • Fabric8

  • Demo

 

Cost of change

softshake-2015

Cost of change change

Business requirement

2x

Development

3x

Operation

4x

Infrastructure

Integration costs

  • Integration is Hard!

  • Different system vintages

  • Mainframe, EAI Hub, MOM, EJB, Web Services

  • Systems must collaborate

esb

Integration costs

  • Protocol (IIOP, DCOM, JMS, MQTT, AMDP, …)

  • Standard (JBI, EJB)

  • Data Format (XSD, JSon)

  • Data Mapping (csv to XML)

integration-2

Integration costs

  • Services governance

  • Security

  • Procedures

  • Volumetry

  • Timing

  • Communication

integration-1

 

Continuous Delivery Strategy !

softshake-2015

 

worked-fine-in-dev

“WTF is DevOps?”

  • IT is a core competency

  • Set of principles

  • There’s more to applications than coding!

  • Feedback, Repetition

  • Communication

  • People!

wtf-dev-ops

“Coder, programmer”

developer

“Interest”

languages

java, web2, html, js, unit test, …

“Operation guy”

opts it

log, cpu, thread blocked, report, procedure, alert, monitoring, …

Strategy

  • Objective Continuous Integration strategy

  • Establish a concrete pipeline to production

  • Build/Test/Release more often

idea

Impact

  • Bottlenecks ?

  • Involves Dev & Ops to be successful

  • Every build "release candidate"

collaborate

Automate Pipeline

  • Developer

    • Unit test

    • Integration test

    • Build

    • Deployment

    • Doc / Release

devops2

Automate Pipeline

  • Operations

    • Setup (V)Machine

    • Provisioning software

    • Deploy procedures in QA/UAT/PROD

devops1

 

Requirements to support CD

softshake-2015

Dev Tools

  • SCM Git

  • Code Review Gerrit

  • Git Repos mngt Gitlab/Gogs

  • Build Apache Maven

  • Automate Jenkins

  • Code Quality Sonarqube

  • Project Mngt Taiga

  • IRC/Chat LetsChat

fabric8-cd-tools

Platform

  • Machine → VM

  • VM → Linux Container

  • Red Hat Atomic Enterprise Platform

rhel-atomic

 

Linux container

softshake-2015

Process

docker-animated-1

Docker

docker filesystems multilayer
  • Union FS mounted with immutable images

  • Benefits: portability, reusability, versioning, application-centric

Docker config

dockerfile

Docker

  • Container runtime, image distribution, Process launcher

docker-animated-2

docker-logo

 

Management platform

softshake-2015

Kubernetes

  • Runtime & Operational management of containers

  • ApiServer (event, status), Scheduler, Controller & State Storage

  • Agent - Kubelet - manage containers on host

  • Containers pods (= shared docker containers)

kubernetes logo

Kubernetes

kubernetes-platform

Pod & docker

fabric8 pod
  • Communicate to each other using skyDNS to resolve hostname

Pod & port

fabric8 pod port
  • Ports can be exposed

Pod & volume

fabric8 pod volume
  • Share data using mounted volume between host & container

Kubernetes Service

fabric8 service pod
  • Kube Service loadbalanced through the pods using HA-Proxy Routes map private with public IP address

Kube Application JSon

kubernetes-json-1

kubernetes-json-2

 

Platform as Service

softshake-2015

OpenShift v3

  • Designed around Kubernetes, Docker, Fabric8

  • Provide new features

    • Docker Images Registry & Certification

    • SSO - Authentication Server

    • Api for Management, Client Command Line

    • Build S2I

rht-atomic-enterprise-openshift

Architecture

ose-v3

CDelivery Technology

new-cd-pipeline

  • Manage setup/build/deploy images

  • Tooling Mngt CD Pipeline & Apps

  • Stage environments

  • Provision Worflow Pipeline

fabric8-logo

Fabric8 Maven Plugin

  • docker:build Build image of app

  • docker:push Push image

  • fabric8:json generates Kube MetaData App

  • fabric8:apply deploy on Openshift

  • fabric8:recreate redeploy on Openshift

  • fabric8:devops automate pipeline creation

  • and more to create env, delete pods, create routes

 

fabric8-diagram1

 

This is a text box. this is a text box. This is a text box. this is a text box. This is a text box. this is a text box. This is a text box. this is a text box.

 

fabric8-cdci

 

Demo

softshake-2015

Questions